home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / SCSL / sggsvp.z / sggsvp
Encoding:
Text File  |  2002-10-03  |  6.9 KB  |  199 lines

  1.  
  2.  
  3.  
  4. SSSSGGGGGGGGSSSSVVVVPPPP((((3333SSSS))))                                                          SSSSGGGGGGGGSSSSVVVVPPPP((((3333SSSS))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      SGGSVP - compute orthogonal matrices U, V and Q such that  N-K-L K L
  10.      U'*A*Q = K ( 0 A12 A13 ) if M-K-L >= 0
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE SGGSVP( JOBU, JOBV, JOBQ, M, P, N, A, LDA, B, LDB, TOLA, TOLB,
  14.                         K, L, U, LDU, V, LDV, Q, LDQ, IWORK, TAU, WORK, INFO )
  15.  
  16.          CHARACTER      JOBQ, JOBU, JOBV
  17.  
  18.          INTEGER        INFO, K, L, LDA, LDB, LDQ, LDU, LDV, M, N, P
  19.  
  20.          REAL           TOLA, TOLB
  21.  
  22.          INTEGER        IWORK( * )
  23.  
  24.          REAL           A( LDA, * ), B( LDB, * ), Q( LDQ, * ), TAU( * ), U(
  25.                         LDU, * ), V( LDV, * ), WORK( * )
  26.  
  27. IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
  28.      These routines are part of the SCSL Scientific Library and can be loaded
  29.      using either the -lscs or the -lscs_mp option.  The -lscs_mp option
  30.      directs the linker to use the multi-processor version of the library.
  31.  
  32.      When linking to SCSL with -lscs or -lscs_mp, the default integer size is
  33.      4 bytes (32 bits). Another version of SCSL is available in which integers
  34.      are 8 bytes (64 bits).  This version allows the user access to larger
  35.      memory sizes and helps when porting legacy Cray codes.  It can be loaded
  36.      by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
  37.      only one of the two versions; 4-byte integer and 8-byte integer library
  38.      calls cannot be mixed.
  39.  
  40. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  41.      SGGSVP computes orthogonal matrices U, V and Q such that N-K-L K L U'*A*Q
  42.      = K ( 0 A12 A13 ) if M-K-L >= 0;               L ( 0     0   A23 )
  43.                M-K-L ( 0     0    0  )
  44.  
  45.                       N-K-L  K    L
  46.              =     K ( 0    A12  A13 )  if M-K-L < 0;
  47.                  M-K ( 0     0   A23 )
  48.  
  49.                     N-K-L  K    L
  50.       V'*B*Q =   L ( 0     0   B13 )
  51.                P-L ( 0     0    0  )
  52.  
  53.      where the K-by-K matrix A12 and L-by-L matrix B13 are nonsingular upper
  54.      triangular; A23 is L-by-L upper triangular if M-K-L >= 0, otherwise A23
  55.      is (M-K)-by-L upper trapezoidal.  K+L = the effective numerical rank of
  56.      the (M+P)-by-N matrix (A',B')'.  Z' denotes the transpose of Z.
  57.  
  58.      This decomposition is the preprocessing step for computing the
  59.      Generalized Singular Value Decomposition (GSVD), see subroutine SGGSVD.
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. SSSSGGGGGGGGSSSSVVVVPPPP((((3333SSSS))))                                                          SSSSGGGGGGGGSSSSVVVVPPPP((((3333SSSS))))
  71.  
  72.  
  73.  
  74. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  75.      JOBU    (input) CHARACTER*1
  76.              = 'U':  Orthogonal matrix U is computed;
  77.              = 'N':  U is not computed.
  78.  
  79.      JOBV    (input) CHARACTER*1
  80.              = 'V':  Orthogonal matrix V is computed;
  81.              = 'N':  V is not computed.
  82.  
  83.      JOBQ    (input) CHARACTER*1
  84.              = 'Q':  Orthogonal matrix Q is computed;
  85.              = 'N':  Q is not computed.
  86.  
  87.      M       (input) INTEGER
  88.              The number of rows of the matrix A.  M >= 0.
  89.  
  90.      P       (input) INTEGER
  91.              The number of rows of the matrix B.  P >= 0.
  92.  
  93.      N       (input) INTEGER
  94.              The number of columns of the matrices A and B.  N >= 0.
  95.  
  96.      A       (input/output) REAL array, dimension (LDA,N)
  97.              On entry, the M-by-N matrix A.  On exit, A contains the
  98.              triangular (or trapezoidal) matrix described in the Purpose
  99.              section.
  100.  
  101.      LDA     (input) INTEGER
  102.              The leading dimension of the array A. LDA >= max(1,M).
  103.  
  104.      B       (input/output) REAL array, dimension (LDB,N)
  105.              On entry, the P-by-N matrix B.  On exit, B contains the
  106.              triangular matrix described in the Purpose section.
  107.  
  108.      LDB     (input) INTEGER
  109.              The leading dimension of the array B. LDB >= max(1,P).
  110.  
  111.      TOLA    (input) REAL
  112.              TOLB    (input) REAL TOLA and TOLB are the thresholds to
  113.              determine the effective numerical rank of matrix B and a subblock
  114.              of A. Generally, they are set to TOLA = MAX(M,N)*norm(A)*MACHEPS,
  115.              TOLB = MAX(P,N)*norm(B)*MACHEPS.  The size of TOLA and TOLB may
  116.              affect the size of backward errors of the decomposition.
  117.  
  118.      K       (output) INTEGER
  119.              L       (output) INTEGER On exit, K and L specify the dimension
  120.              of the subblocks described in Purpose.  K + L = effective
  121.              numerical rank of (A',B')'.
  122.  
  123.      U       (output) REAL array, dimension (LDU,M)
  124.              If JOBU = 'U', U contains the orthogonal matrix U.  If JOBU =
  125.              'N', U is not referenced.
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. SSSSGGGGGGGGSSSSVVVVPPPP((((3333SSSS))))                                                          SSSSGGGGGGGGSSSSVVVVPPPP((((3333SSSS))))
  137.  
  138.  
  139.  
  140.      LDU     (input) INTEGER
  141.              The leading dimension of the array U. LDU >= max(1,M) if JOBU =
  142.              'U'; LDU >= 1 otherwise.
  143.  
  144.      V       (output) REAL array, dimension (LDV,M)
  145.              If JOBV = 'V', V contains the orthogonal matrix V.  If JOBV =
  146.              'N', V is not referenced.
  147.  
  148.      LDV     (input) INTEGER
  149.              The leading dimension of the array V. LDV >= max(1,P) if JOBV =
  150.              'V'; LDV >= 1 otherwise.
  151.  
  152.      Q       (output) REAL array, dimension (LDQ,N)
  153.              If JOBQ = 'Q', Q contains the orthogonal matrix Q.  If JOBQ =
  154.              'N', Q is not referenced.
  155.  
  156.      LDQ     (input) INTEGER
  157.              The leading dimension of the array Q. LDQ >= max(1,N) if JOBQ =
  158.              'Q'; LDQ >= 1 otherwise.
  159.  
  160.      IWORK   (workspace) INTEGER array, dimension (N)
  161.  
  162.      TAU     (workspace) REAL array, dimension (N)
  163.  
  164.      WORK    (workspace) REAL array, dimension (max(3*N,M,P))
  165.  
  166.      INFO    (output) INTEGER
  167.              = 0:  successful exit
  168.              < 0:  if INFO = -i, the i-th argument had an illegal value.
  169.  
  170. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  171.      The subroutine uses LAPACK subroutine SGEQPF for the QR factorization
  172.      with column pivoting to detect the effective numerical rank of the a
  173.      matrix. It may be replaced by a better rank determination strategy.
  174.  
  175.  
  176. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  177.      INTRO_LAPACK(3S), INTRO_SCSL(3S)
  178.  
  179.      This man page is available only online.
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.